#include "label.h"

Label::Label(QWidget* parent) : QLabel(parent)
{}

//这里我们对QLabel进行了继承,然后进行事件函数的重写
//所以在ui文件中我们创建的QLabel文件,都需要类型提升,提升到Label
//这样Qt才能识别到对应的事件,不然对应的事件是不会进行触发的
//同时注意到类型提升时,需要将类名写清楚,不然也会报错
//一定要确保你的类名以及头文件的名字和上述自定义的类名头文件都要匹配
void Label::enterEvent(QEvent *event)
{
    static_cast<void>(event);
    qDebug() << "enterEvent";
}

void Label::leaveEvent(QEvent *event)
{
    static_cast<void>(event);
    qDebug() << "leaveEvent";
}

void Label::mousePressEvent(QMouseEvent *event)
{
    //这个鼠标按下事件,可以接收所有的鼠标基本按键,所以我们需要对这个按键进行判断,看是哪一个鼠标按键按下了
    if (event->button() == Qt::LeftButton) {
        qDebug() << "按下左键";
    } else if (event->button() == Qt::RightButton) {
        qDebug() << "按下右键";
    }

    ////当前event对象就包含了鼠标点击位置的坐标
    ////这个是相对于Label的坐标
    //qDebug() << "Label中的横坐标是: " << event->x() << ", Label中的纵坐标是: " << event->y();
    ////这个是相对于这个屏幕的坐标
    //qDebug() << "屏幕中的横坐标是: " << event->globalX() << ", 屏幕中的纵坐标是: " << event->globalY();
}

void Label::mouseReleaseEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        qDebug() << "释放左键";
    } else if (event->button() == Qt::RightButton) {
        qDebug() << "释放右键";
    }
}

//比如有的程序，可能是单击有一些逻辑.双击有另一些逻辑，如果我们没注意，可能双击操作就能触发单击的逻辑.可能就有bug
//第二次按下的时候，才能够识别到是"双击"
void Label::mouseDoubleClickEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        qDebug() << "双击左键";
    } else if (event->button() == Qt::RightButton) {
        qDebug() << "双击右键";
    }
}


